Memory devices are typically provided as internal, semiconductor, integrated circuits in computers or other electronic devices. There are many different types of memory including random-access memory (RAM), read only memory (ROM), dynamic random access memory (DRAM), synchronous dynamic random access memory (SDRAM), and flash memory.
Flash memory devices have developed into a popular source of non-volatile memory for a wide range of electronic applications. Flash memory devices typically use a one-transistor memory cell that allows for high memory densities, high reliability, and low power consumption. Changes in threshold voltage of the cells, through programming of a charge storage structure, such as floating gates or trapping layers or other physical phenomena, determine the data state of each cell. Common uses for flash memory include personal computers, personal digital assistants (PDAs), digital cameras, digital media players, digital recorders, games, appliances, vehicles, wireless devices, cellular telephones, and removable memory modules, and the uses for flash memory continue to expand.
Flash memory typically utilizes one of two basic architectures known as NOR flash and NAND flash. The designation is derived from the logic used to read the devices. In NOR flash architecture, a logical column of memory cells is coupled in parallel with each memory cell coupled to a data line, such as those typically referred to as digit (e.g., bit) lines. In NAND flash architecture, a column of memory cells is coupled in series with only the first memory cell of the column coupled to a bit line.
Content addressable memories (CAM) are memories that implement a lookup table function in a single clock cycle. They use dedicated comparison circuitry to perform the lookups. CAM applications are often used in network routers for packet forwarding and the like. Each individual memory in a CAM requires its own comparison circuit in order to allow the CAM to detect a match between a bit of the key word with a bit stored in the CAM. Typical CAM cells, then, use approximately nine to ten transistors for a static random access memory (SRAM)-based CAM, or four to five transistors for a dynamic random access memory (DRAM)-based CAM.
NAND flash memory can be used in a CAM scheme to provide a pattern matching function. For example, patterns can be matched by comparing key word data with data stored in the memory array. The CAM matching scheme can also be used by programmable logic devices (PLDs) like programmable logic arrays (PLAs) and programmable array logic (PAL).
For a memory device to effectively realize a logic function of 2m→n, where m is the address cardinality and n is the output cardinality, the function mapping should be exhaustive. In other words, for each input value a word should be stored in memory. PLDs have been used to implement functions but they can typically only be programmed with minterms (i.e., a logical expression that employs only the complement operator and the conjunction operator) of the programmed logic function due to their limited output size. Additionally, PLDs typically are not reprogrammable. Once programmed, they must be discarded if the programmed functions are changed.
For the reasons stated above and for other reasons that will become apparent to those skilled in the art upon reading and understanding the present specification, there is a need in the art for a PLD that can implement a large quantity of logic functions.